home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-03-03 | 44.2 KB | 1,368 lines |
-
-
- IETF Page 1
- January 6, 1993 CLNP for TUBA Internet Draft
-
-
- Use of ISO CLNP in TUBA Environments
-
-
- David M. Piscitello
- Bellcore
- dave@sabre.bellcore.com
-
-
- Status of this Memo
-
- This document is an Internet Draft. Internet Drafts are working
- documents of the Internet Engineering Task Force (IETF), its
- Areas, and its Working Groups. Note that other groups may also
- distribute working documents as Internet Drafts.
-
- Internet Drafts are draft documents valid for a maximum of six
- months. Internet Drafts may be updated, replaced, or obsoleted by
- other documents at any time. It is not appropriate to use
- Internet Drafts as reference material or to cite them other than
- as a "working draft" or "work in progress."
-
- Please check the Internet Draft abstract listing contained in the
- IETF Shadow Directories (cd internet-drafts) to learn the current
- status of this or any other Internet Draft.
-
- This Internet-Draft specifies a profile of the ISO 8473
- Connectionless-mode Network Layer Protocol (CLNP, [1]) for use in
- conjunction with RFC 1347, TCP/UDP over Bigger Addresses (TUBA,
- [2]). This draft document will be submitted to the RFC editor as
- a protocol specification. Distribution of this memo is unlimited.
- Please send comments to dave@eve.bellcore.com.
-
-
- Abstract
-
- This document describes the use of CLNP to provide the lower-
- level service expected by Transmission Control Protocol (TCP,
- [3]) and User Datagram Protocol (UDP, [4]). CLNP provides
- essentially the same datagram service as Internet Protocol (IP,
- [5]), but offers a means of conveying bigger network addresses
- (with additional structure, to aid routing).
-
- While the protocols offer nearly the same services, IP and CLNP
- are not identical. This document describes a means of preserving
- the semantics of IP information that is absent from CLNP while
- preserving consistency between the use of CLNP in Internet and
- OSI environments. This maximizes the use of already-deployed CLNP
- implementations.
-
-
- Acknowledgments
-
-
-
-
-
-
-
-
-
-
-
- IETF Page 2
- Internet Draft CLNP for TUBA January 6, 1993
-
-
- Many thanks to Ross Callon of Digital Equipment, Brian Carpenter
- of CERN, and Dave Katz of Cisco Systems for their assistance in
- composing this text.
-
-
- Conventions
-
- The following language conventions are used in the items of
- specification in this document:
-
- o+ Must, Shall, or Mandatory -- the item is an absolute
- requirement of the specification.
-
- o+ Should or Recommended -- the item should generally be
- followed for all but exceptional circumstances.
-
- o+ May or Optional -- the item is truly optional and may be
- followed or ignored according to the needs of the
- implementor.
-
-
- 1. Terminology
-
- To the extent possible, this document is written in the language
- of the Internet. For example, packet is used rather than
- "protocol data unit", and "fragment" is used rather than
- "segment". There are some terms that carry over from OSI; these
- are, for the most part, used so that cross-reference between this
- document and RFC994 or ISO 8473 is not entirely painful. OSI
- acronyms are for the most part avoided.
-
-
- 2. Introduction
-
- The goal of this specification is to allow compatible and
- interoperable implementations to encapsulate TCP and UDP packets
- in CLNP data units. It is assumed that readers are familiar with
- RFC 791 and, to a lesser extent, RFC 994 and ISO 8473. This
- document is compatible with (although more restrictive than) ISO
- 8473; specifically, the order, semantics, and processing of CLNP
- header fields is consistent between this and ISO 8473. However,
- it is intended that this document be able to stand on its own
- without reference to ISO 8473, at least with respect to
- implementing CLNP to provide the lower-level service expected by
- TCP and UDP.
-
- [Editor's Note: RFC 994 contains the Draft International Standard
- version of ISO CLNP [6], in ASCII text. This is not the final
- version of the ISO protocol specification; however, it should
- provide sufficient background for the purpose of understanding
- the relationship of CLNP to IP, and the means whereby IP
- information is to be encoded in CLNP header fields. Postscript
- versions of ISO CLNP and associated routing protocols are
-
-
-
-
-
-
-
-
-
- IETF Page 3
- January 6, 1993 CLNP for TUBA Internet Draft
-
-
- available via anonymous FTP from merit.edu, and may be found in
- the directory /pub/iso.]
-
-
- 3. Overview of CLNP
-
- ISO CLNP is a datagram network protocol. It provides
- fundamentally the same underlying service to a transport layer as
- IP. CLNP provides essentially the same maximum datagram size, and
- for those circumstances where datagrams may need to traverse a
- network whose maximum packet size is smaller than the size of the
- datagram, CLNP provides mechanisms for fragmentation (data unit
- identification, fragment/total length and offset). Like IP, a
- checksum computed on the CLNP header provides a verification that
- the information used in processing the CLNP datagram has been
- transmitted correctly, and a lifetime control mechanism ("Time to
- Live") imposes a limit on the amount of time a datagram is
- allowed to remain in the internet system. As is the case in IP, a
- set of options provides control functions needed or useful in
- some situations but unnecessary for the most common
- communications.
-
- Table 1 provides a high-level comparison of CLNP to IP:
-
-
-
- Function | ISO CLNP | DOD IP
- ------------------------|-----------------------|-----------------------
- Version Identifier | 1 octet | 4 bits
- Header Length | indicated in octets | in 32-bit words
- Total Length | 16 bits, in octets | 16 bits, in octets
- Data Unit Identifier | 16 bits | 16 bits
- Flags | Fragmentation allowed,| Don't Fragment,
- | More Fragments | More Fragments,
- | Suppress Error Reports| <not defined>
- Fragment offset | 16 bits, in octets | 13 bits, 8-octet units
- Lifetime (Time to live) | 500 msec units | 1 sec units
- Higher Layer Protocol | Selector in address | PROTOcol (assigned #)
- Header Checksum | 16-bit (Fletcher) | 16-bit
- Addressing | Variable length | 32-bit fixed
- Options | Security | Security
- | Priority | Precedence bits in TOS
- | Complete Source Route | Strict Source Route
- | Quality of Service | Type of Service
- | Partial Source Route | Loose Source Route
- | Record Route | Record Route
- | Padding | Padding
- | <defined herein> | Timestamp
-
-
-
- Table 1. Comparison of IP to CLNP
-
-
-
-
-
-
-
-
-
-
- IETF Page 4
- Internet Draft CLNP for TUBA January 6, 1993
-
-
- Note that the encoding of options differs between the two
- protocols, as do the means of higher level protocol
- identification. Note also that CLNP and IP differ in the way
- header and fragment lengths are represented, and that the
- granularity of lifetime control (time-to-live) is finer in CLNP.
- Some of these differences are not considered "issues", as CLNP
- provides flexibility in the way that certain options may be
- specified and encoded (this will facilitate the use and encoding
- of certain IP options without change in syntax); others, e.g.,
- higher level protocol identification and timestamp, must be
- accommodated in a transparent manner in this profile for correct
- operation of TCP and UDP, and continued interoperability with OSI
- implementations. Section 4 describes how header fields of CLNP
- must be populated to satisfy the needs of TCP and UDP.
-
- Errors detected during the processing of a CLNP datagram may be
- reported using CLNP Error Reports. Implementations of CLNP for
- TUBA environments must be capable of processing Error Reports
- (this is consistent with the 1992 version of the ISO 8473
- standard). Control messages (e.g., echo request/reply and
- redirect) are similarly handled in CLNP, i.e., identified as
- separate network layer packet types. The relationship between
- CLNP Error and Control messages and Internet Control Message
- Protocol (ICMP, [7]), and issues relating to the handling of
- these messages is described in Section 5.
-
- The composition and processing of a TCP pseudo-header when CLNP
- is used to provide the lower-level service expected by TCP and
- UDP is described in Section 6.
-
-
-
- 4. Proposed Internet Header using CLNP
-
- A summary of the contents of the CLNP header, as it is proposed
- for use in TUBA environments, is illustrated in Figure 4-1:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- IETF Page 5
- January 6, 1993 CLNP for TUBA Internet Draft
-
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ........Data Link Header........ | NLP ID |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |Header Length | Version | Lifetime (TTL)|Flags| Type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Fragment Length | Checksum |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Dest Addr Len | Destination Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ... Destination Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ... Destination Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ... Destination Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ... Destination Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | PROTO field | Src Addr Len | Source Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ... Source Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ... Source Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ... Source Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ... Source Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ... Source Address | Reserved | Data Unit... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ...Identifier | Fragment Offset |Total Length.. |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ... of Packet | Options... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- : :
- | Options (see Table 1) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Note that each tick mark represents one bit position.
-
-
-
- Figure 4-1. CLNP for TUBA
-
- Note 1: For illustrative purposes, Figure 4-1 depicts Destination and
- Source Addresses having a length of 19 octets, including the
- PROTO/reserved field. In general, addresses can be variable
- length, up to a maximu of 20 octets, including the
- PROTO/reserved field.
-
-
-
-
-
-
-
-
-
-
- IETF Page 6
- Internet Draft CLNP for TUBA January 6, 1993
-
-
- Note 2: Due to differences in link layer protocols, it is not possible
- to ensure that the packet starts on an even alignment. Note,
- however, that many link level protocols over which CLNP is operated
- happen to use a odd length link (e.g., 802.2). (As profiled in
- Figure 4-1, the rest of the CLNP packet is even-aligned.)
-
-
- The encoding of CLNP fields for use in TUBA environments is as
- follows.
-
- 4.1 Network Layer Protocol Identification (NLP ID)
-
- This one-octet field identifies this as the ISO 8473 protocol; it
- must set to binary 1000 0001.
-
- 4.2 Header Length Indication (Header Length)
-
- Header Length is the length of the CLNP header in octets, and
- thus points to the beginning of the data. The value 255 is
- reserved. The header length is the same for all fragments of the
- same (original) CLNP packet.
-
- [Note: General purpose CLNP implementations must be willing to
- accept addresses of variable length up to 20 octets. In
- particular, implementations that are expected to support both
- GOSIP and RFC 1237 [13] style addresses in addition to "TUBA"
- addresses [8]. must be capable of dealing with 20-octet
- addresses.]
-
- 4.3 Version
-
- This one-octet field identifies the version of the protocol; it
- must be set to a binary value 0000 0001.
-
- 4.4 Lifetime (TTL)
-
- Like the TTL field of IP, this field indicates the maximum time
- the datagram is allowed to remain in the internet system. If
- this field contains the value zero, then the datagram must be
- destroyed. This field is modified in internet header processing.
- The time is measured in units of 500 milliseconds, but since
- every module that processes a datagram must decrease the TTL by
- at least one even if it process the datagram in less than 500
- millisecond, the TTL must be thought of only as an upper bound on
- the time a datagram may exist. The intention is to cause
- undeliverable datagrams to be discarded, and to bound the maximum
- CLNP datagram lifetime. [Like IP, the colloquial usage of TTL in
- CLNP is as a coarse hop-count.]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- IETF Page 7
- January 6, 1993 CLNP for TUBA Internet Draft
-
-
- 4.5 Flags
-
- Three flags are defined. These occupy bits 0, 1, and 2 of the
- Flags/Type octet:
-
- 0 1 2
- +---+---+---+
- | F | M | E |
- | P | F | R |
- +---+---+---+
-
- The Fragmentation Permitted (FP) flag, when set to a value of one
- (1), is semantically equivalent to the "may fragment" value of
- the Don't Fragment field of IP; similarly, when set to zero (0),
- the Fragmentation Permitted flag is semantically equivalent to
- the "Don't Fragment" value of the Don't Fragment Flag of IP.
-
- [Editor's Note: If the Fragmentation Permitted field is set to
- the value O, then the Data Unit Identifier, Fragment Offset, and
- Total Length fields are not present. This denotes a single
- fragment datagram. In such datagrams, the Fragment Length field
- contains the total length of the datagram.]
-
- The More Fragments flag of CLNP is semantically and syntactically
- the same as the More Fragments flag of IP; a value of one (1)
- indicates that more segments/fragments are forthcoming; a value
- of zero (0) indicates that the last octet of the original packet
- is present in this segment.
-
- The Error Report (ER) flag is used to suppress the generation of
- an error message by a host/router that detects an error during
- the processing of a CLNP datagram; a value of one (1) indicates
- that the host that originated this datagram thinks error reports
- are useful, and would dearly love to receive one if a host/router
- finds it necessary to discard its datagram(s).
-
- 4.6 Type field
-
- The type field distinguishes data CLNP packets from Error Reports
- from Echo packets. The following values of the type field apply:
-
-
- 0 1 2 3 4 5 6 7
- +---+---+---+---+---+---+---+---+
- | flags | 1 | 1 | 1 | 0 | 0 | => Encoding of Type = data packet
- +---+---+---+---+---+---+---+---+
- | flags | 0 | 0 | 0 | 0 | 1 | => Encoding of Type = error report
- +---+---+---+---+---+---+---+---+
- | flags | 1 | 1 | 1 | 1 | 0 | => Encoding of Type = echo request
- +---+---+---+---+---+---+---+---+
- | flags | 1 | 1 | 1 | 1 | 1 | => Encoding of Type = echo reply
- +---+---+---+---+---+---+---+---+
-
-
-
-
-
-
-
-
-
-
- IETF Page 8
- Internet Draft CLNP for TUBA January 6, 1993
-
-
- Error Report packets are described in Section 5.
-
- Echo and its use is described in RFC 1139 [14].
-
- 4.7 Fragment Length
-
- Like the Total Length of the IP header, the Fragment length field
- contains the length in octets of the fragment (i.e., this
- datagram) including both header and data. [Note: CLNP also has a
- Total Length field, that contains the length of the original
- datagram; i.e., the sum of the length of the CLNP header plus the
- length of the data submitted by the higher level protocol, e.g.,
- TCP or UDP).
-
- 4.8 Checksum
-
- A checksum is computed on the header only. It is verified at each
- host/router that processes the packet; if header fields are
- changed during processing (e.g., the Lifetime), the checksum is
- modified. If the checksum is not used, this field must be coded
- with a value of zero (0). See Appendix A for algorithms used in
- the computation and adjustment of the checksum.
-
- 4.9 Destination Address Length Indicator ()
-
- This field indicates the length, in octets, of the Destination
- Address.
-
- 4.10 Destination Address
-
- The format of the address encoded in this field is described in a
- companion addressing document, see [8].
-
- For compatibility and interoperability with OSI use of CLNP, the
- initial octet of the Destination Address is assumed to be an
- Authority and Format Indicator, as defined in ISO 8348 [7]. A
- destination address may be between 8 and 20 octets long
- (inclusive). The final octet of the destination address must
- always contain the value of the PROTO field, as defined in IP.
- The 8-bit PROTO field indicates the next level protocol used in
- the data portion of the CLNP datagram. The values for various
- protocols are specified in "Assigned Numbers" [9]. For the PROTO
- field, the value of zero (0) is reserved.
-
- 4.11 Source Address Length Indicator ()
-
- This field indicates the length, in octets, of the Source
- Address.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- IETF Page 9
- January 6, 1993 CLNP for TUBA Internet Draft
-
-
- 4.12 Source Address
-
- The format of the address encoded in this field is described in a
- companion addressing document, see [8].
-
- For compatibility and interoperability with OSI use of CLNP, the
- initial octet of the Destination Address is assumed to be an
- Authority and Format Indicator, as defined in ISO 8348 [7]. A
- destination address may be between 8 and 20 octets long
- (inclusive). The final octet of the source address is reserved.
- It may be set to the protocol field value on transmission, and
- shall be ignored on reception (the value of zero must not be
- used).
-
- 4.13 Data Unit Identifier
-
- Like the Identification field of IP, this 16-bit field is used to
- distinguish segments of the same (original) packet for the
- purposes of reassembly.
-
- 4.14 Fragment Offset
-
- Like the Fragment Offset of IP, this 16-bit is used to identify
- the relative octet position of the data in this fragment with
- respect to the start of the data submitted to CLNP; i.e., it
- indicates where in the original datagram this fragment belongs.
-
- 4.15 Options
-
- All CLNP options are "triplets" of the form <parameter code>,
- <parameter lenth>, and <parameter value>. Both the parameter
- code and length fields are always one octet long; the length
- parameter value, in octets, is indicated in the parameter length
- field. The following options are defined for CLNP for TUBA.
-
- 4.15.1 _S_e_c_u_r_i_t_y
-
- The value of the parameter code field is binary 1100 0101. The
- length field must be set to the length of a Basic (and Extended)
- Security IP option(s) as identified in RFC1108 [10], plus 1.
- Octet 1 of the security parameter value field -- the CLNP
- Security Format Code -- is set to a binary value 0100 0000,
- indicating that the remaining octets of the security field
- contain either the Basic or Basic and Extended Security options
- as identified in RFC 1108 [10]. This encoding points to the
- administration of the source address (e.g., ISOC) as the
- administration of the security option; it is thus distinguished
- from the globally unique format whose definition is reserved for
- OSI use. Implementations must examine the PROTO field in the
- source address; if the value of PROTO indicates the CLNP client
- is TCP or UDP, the security option described in RFC1108 is used.
-
-
-
-
-
-
-
-
-
-
-
- IETF Page 10
- Internet Draft CLNP for TUBA January 6, 1993
-
-
- The formats of the Security option, encoded as a CLNP option, is
- as follows. The CLNP option will be used to convey the Basic and
- Extended Security options as sub-options; i.e., the exact
- encoding of the Basic/Extended Security IP Option is carried in a
- single CLNP Security Option, with the length of the CLNP Security
- option reflecting the sum of the lengths of the Basic and
- Extended Security IP Option.
-
-
- +--------+--------+--------+--------+--------+------//-----+---
- |11000100|XXXXXXXX|01000000|10000010|YYYYYYYY| | ...
- +--------+--------+--------+--------+--------+------//-----+------
- CLNP CLNP CLNP BASIC BASIC BASIC
- OPTION OPTION FORMAT SECURITY OPTION OPTION
- TYPE LENGTH CODE TYPE LENGTH VALUE
- (197) (130)
-
-
- ---+------------+------------+----//-------+
- ... | 10000101 | 000LLLLL | |
- -----+------------+------------+----//-------+
- EXTENDED EXTENDED EXTENDED OPTION
- OPTION OPTION VALUE
- TYPE (133) LENGTH
-
-
-
- The syntax, semantics and processing of the Basic and Extended
- IP Security Options are defined in RFC1108.
-
-
- 4.15.2 _T_y_p_e__o_f__S_e_r_v_i_c_e
-
- The value of the parameter code field must be set to a value of
- binary 1100 0011 (the CLNP Quality of Service Option Code point).
- The length field must be set to the length of the type of service
- field as identified in RFC1349, Type of Service in the Internet
- Protocol Suite [11], plus 1 (i.e., the value is 2). Octet 1 of
- the type of service parameter field is set to a binary value 0100
- 0000, indicating that the remaining octet of the Type Of Service
- field is to be encoded as described in RFC1349. This encoding
- points to the administration of the source address (e.g., ISOC)
- as the administration of the CLNP QOS option; it is thus
- distinguished from the globally unique QOS format whose
- definition is reserved for OSI use. Implementations must examine
- the PROTO field in the source address; if the value of PROTO
- indicates the CLNP client is TCP or UDP, the TOS described in
- RFC1349 is used.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- IETF Page 11
- January 6, 1993 CLNP for TUBA Internet Draft
-
-
- +-----------+----------+----------+----------+
- | 1100 0011 | 00000010 | 01000000 | PPPTTTT0 |
- +-----------+----------+----------+----------+
- CLNP QOS OPTION QOS FORMAT IP TOS
- TYPE (195) LENGTH CODE OCTET
-
-
- The Type of Service octet consists of three fields:
-
-
- 0 1 2 3 4 5 6 7
- +-----+-----+-----+-----+-----+-----+-----+-----+
- | PRECEDENCE | TOS | MBZ |
- +-----+-----+-----+-----+-----+-----+-----+-----+
-
- The first field, labeled "PRECEDENCE" above, is intended to
- denote the importance or priority of the datagram. The second
- field, labeled "TOS" above, denotes how the network should make
- tradeoffs between throughput, delay, reliability, and cost. The
- last field must be zero ("MBZ").
-
- The processing of the type of service option is defined in
- RFC1349. The rules for applying TOS in Error and Report messages
- should correspond to those applied to the corresponding ICMP
- messages; i.e., error messages must always be sent with the
- default TOS; request messages may have any correct TOS value, and
- replies must be sent with the same value in the TOS field as was
- used in the corresponding request message.
-
- [Editor's Note: It has been suggested that the IP precedence map
- directly into a CLNP option, Priority. The feature will be
- provided irrespective of whether precedence is encoded in the TOS
- or Priority option.]
-
- 4.15.3 _P_a_d_d_i_n_g
-
- The padding field is used to lengthen the packet header to a
- convenient size. The parameter code field must be set to a value
- of binary 1100 1100. The value of the parameter length field is
- variable. The parameter value may contain any value.
-
-
- +----------+----------+-----------+
- | 11001100 | LLLLLLLL | VVVV VVVV |
- +----------+----------+-----------+
-
- 4.15.4 _S_o_u_r_c_e__R_o_u_t_i_n_g
-
- Like the strict source route option of IP, the Complete Source
- Route option of CLNP is used to specify the exact and entire
- route an internet datagram must take. Similarly, the Partial
- Source Route option of CLNP provides the equivalent of the loose
- source route option of IP; i.e., a means for the source of an
-
-
-
-
-
-
-
-
-
- IETF Page 12
- Internet Draft CLNP for TUBA January 6, 1993
-
-
- internet datagram to supply (some) routing information to be used
- by gateways in forwarding the internet datagram towards its
- destination.
-
- The parameter code for Source Routing is binary 1100 1000. The
- length of the source routing parameter value is variable.
-
- The first octet of the parameter value is a type code, indicating
- Complete Source Routing (binary 0000 0001) or partial source
- routing (binary 0000 0000). The second octet identifies the
- offset of the next network entity title to be processed in the
- list, relative to the start of the parameter (i.e., a value of 3
- is used to identify the first address in the list). The third
- octet begins the list of network entity titles.
-
- 4.15.5 _R_e_c_o_r_d__R_o_u_t_e
-
- Like the IP record route option, the Record route option of CLNP
- is used to trace the route a CLNP datagram takes.
-
- The parameter code for Record Route is binary 1100 1011. The
- length of the record route parameter value is variable.
-
- The first octet of the parameter value is a type code, indicating
- Complete Source Route (0000 0001) Partial Recording of Route
- (0000 0000). The second octet identifies the offset where the
- next network entity title may be recorded (i.e., the end of the
- current list), relative to the start of the parameter (i.e., a
- value of 3 is used to identify the initial recording position).
- If recording of route has been terminated (I'll be back...), this
- octet has a value 255. The third octet begins the list of network
- entity titles.
-
- 4.15.6 _T_i_m_e_s_t_a_m_p
-
- [Editor's Note: There is no timestamp option in CLNP. We propose
- to define the option and submit it to ISO; temporarily, we will
- be most presumptuous and "borrow" a code point from the many that
- are reserved.]
-
- This paper proposes that the parameter code value 1110 1110 be
- used to identify the Timestamp option, and that the syntax and
- semantics of Timestamp be identical to that defined in IP.
-
- The Timestamp Option is defined in RFC 791. It is proposed that
- the parameter code 1110 1110 be used rather than the option type
- code 68 to identify the Timestamp option, and that the parameter
- value convey the option length. Octet 1 of the Timestamp
- parameter value shall be encoded as the pointer (octet 3 of IP
- Timestamp); octet 2 of the parameter value shall be encoded as
- the overflow/format octet (octet 4 of IP Timestamp); the
- remaining octets shall be used to encode the timestamp list. The
- size is fixed by the source, and cannot be changed to accommodate
-
-
-
-
-
-
-
-
-
- IETF Page 13
- January 6, 1993 CLNP for TUBA Internet Draft
-
-
- additional timestamp information.
-
-
- +--------+--------+--------+--------+
- |11101110| length | pointer|oflw|flg|
- +--------+--------+--------+--------+
- | network entity title |
- +--------+--------+--------+--------+
- | timestamp |
- +--------+--------+--------+--------+
- | . |
- .
-
-
-
- 5. Error Reporting and Control Message Handling
-
- CLNP and IP differ in the way in which errors are reported to
- hosts. In IP environments, the Internet Control Message Protocol
- (ICMP, [7]) is used to return (error) messages to hosts that
- originate packets that cannot be processed. ICMP messages are
- transmitted as user data in IP datagrams. Unreachable
- destinations, incorrectly composed IP datagram headers, IP
- datagram discards due to congestion, and lifetime/reassembly time
- exceeded are reported; the complete internet header that caused
- the error plus 8 octets of the segment contained in that IP
- datagram are returned to the sender as part of the ICMP error
- message. For certain errors, e.g., incorrectly composed IP
- datagram headers, the specific octet which caused the problem is
- identified.
-
- In CLNP environments, an unique message type, the Error Report
- type, is used in the network layer protocol header to distinguish
- Error Reports from CLNP datagrams. CLNP Error Reports are
- generated on detection of the same types of errors as with ICMP.
- Like ICMP error messages, the complete CLNP header that caused
- the error is returned to the sender in the data portion of the
- Error Report. Implementations should return at least 8 octets of
- the datagram contained in the CLNP datagram to the sender of the
- original CLNP datagram. Here too, for certain errors, the
- specific octet which caused the problem is identified
-
- A summary of the contents of the CLNP Error Report, as it is
- proposed for use in TUBA environments, is illustrated in Figure
- 5-1:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- IETF Page 14
- Internet Draft CLNP for TUBA January 6, 1993
-
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ........Data Link Header........ | NLP ID |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |Header Length | Version | Lifetime (TTL)| 000 | Type=ER |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | TOTAL Length of Error Report | Checksum |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Dest Addr Len | Destination Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ... Destination Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ... Destination Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ... Destination Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ... Destination Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | PROTO field | Src Addr Len | Source Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ... Source Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ... Source Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ... Source Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ... Source Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ... Source Address | Reason for Discard (type/len) |
- | | 1100 0001 | 0000 0010 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Reason for Discard | Options... |
- | code | pointer | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Options |
- : :
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Note that each tick mark represents one bit position.
-
-
- Figure 5-1. Error Report Format
-
-
- 5.1 Rules for processing an Error Report
-
- The following is a summary of the rules for processing an Error
- Report:
-
-
-
-
-
-
-
-
-
-
-
- IETF Page 15
- January 6, 1993 CLNP for TUBA Internet Draft
-
-
- o+ An Error Report is not generated to report a problem
- encountered while processing an Error Report.
-
- o+ Error Reports may not be fragmented (hence, the
- fragmentation part is absent).
-
- o+ The Reason for Discard Code field is populated with one of
- the values from Table 5-1.
-
- o+ The Pointer field is populated with number of the first
- octet of the field that caused the Error Report to be
- generated. If it is not possible to identify the offending
- octet, this field must be zeroed.
-
- o+ If the Priority or Type of Service option is present in the
- errored datagram, the Error Report shall specify the same
- option, using the value specified in the original datagram.
-
- o+ If the Security option is present in the errored datagram,
- the Error Report shall specify the same option, using the
- value specified in the original datagram; if the Security
- option is not supported, no Error Report is to be generated.
-
- o+ If the Complete Source Route option is specified in the
- errored datagram, the Error Report must compose a reverse of
- that route, and return the datagram along the same path.
-
- 5.2 Comparison of ICMP and CLNP Error Messages
-
- Table 5-1 provides a loose comparison of ICMP message types and
- codes to CLNP Error Type Codes (values in Internet ASCII):
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- IETF Page 16
- Internet Draft CLNP for TUBA January 6, 1993
-
-
- CLNP Error Type Codes | ICMP Message (Type, Code)
- ----------------------------------|------------------------------------
- Reason not specified (0) | Parameter Problem (12, 0)
- Protocol Procedure Error (1) | Parameter Problem (12, 0)
- Incorrect Checksum (2) | Parameter Problem (12, 0)
- PDU Discarded--Congestion (3) | Source Quench (4, 0)
- Header Syntax Error (4) | Parameter problem (12, 0)
- Need to Fragment could not (5) | Frag needed, DF set (3, 4)
- Incomplete PDU received (6) | Parameter Problem (12, 0)
- Duplicate Option (7) | Parameter Problem (12, 0)
- Destination Unreachable (128) | Network Unreachable (3, 0)
- Destination Unknown (129) | Host Unreachable (3, 1)
- Source Routing Error (144) | Source Route failed (3, 5)
- Source Route Syntax Error (145) | Source Route failed (3, 5)
- Unknown Address in Src Route(146) | Source Route failed (3, 5)
- Path not acceptable (147) | Source Route failed (3, 5)
- Lifetime expired (160) | TTL exceeded (11, 0)
- Reassembly Lifetime Expired (161) | Reassembly time exceeded (11, 1)
- Unsupported Option (176) | Parameter Problem (12, 0)
- Unsupported Protocol Version(177) | Parameter problem (12, 0)
- Unsupported Security Option (178) | Parameter problem (12, 0)
- Unsupported Src Rte Option (179) | Parameter problem (12, 0)
- Unsupported Rcrd Rte (180) | Parameter problem (12, 0)
- Reassembly interference (192) | Reassembly time exceeded (11,1)
-
-
- Table 5-1. Comparison of CLNP Error Reports to ICMP Error Messages
-
- Note 1: The current use of the source quench is only
- when packets are discarded, and thus the current use
- meaning is the same; if a future RFC describes a more
- robust treatment of the source quench, the applicability
- of this CLNP Error Report Type should be reconsidered.
-
- Note 2: There are no corresponding CLNP Error Report Codes for the
- following ICMP error message types:
- - Protocol Unreachable (3, 2)
- - Port Unreachable (3, 3)
- [ED. There are error code points available in the ER type
- code block that can be used to identify these message types.]
-
-
-
-
-
- 6. Pseudo-Header Considerations
-
- A checksum is computed on UDP and TCP segments to verify the
- integrity of the UDP/TCP segment. To further verify that the
- UDP/TCP segment has arrived at its correct destination, a
- pseudo-header consisting of information used in the delivery of
- the UDP/TCP segment is composed and included in the checksum
- computation.
-
-
-
-
-
-
-
-
-
- IETF Page 17
- January 6, 1993 CLNP for TUBA Internet Draft
-
-
- To compute the checksum on a UDP or TCP segment prior to
- transmission, implementations must compose a pseudo-header to the
- UDP/TCP segment consisting of the following information that will
- be used when composing the CLNP datagram:
-
- o+ Destination Address Length Indicator
-
- o+ Destination Address and PROTO
-
- o+ Source Address Length Indicator
-
- o+ Source Address and Reserved
-
- The total length of the UDP/TCP segment is also included in the
- checksum computation. Figure 5-1 illustrates the resulting
- pseudo-header when both source and destination addresses are
- maximum length.
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Dest Addr Len | Destination Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ... Destination Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ... Destination Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ... Destination Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ... Destination Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | PROTO field | Src Addr Len | Source Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ... Source Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ... Source Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ... Source Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ... Source Address... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ... Source Address | UDP/TCP segment length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Figure 5-1. Pseudo-header
-
- If needed, an octet of zero is added to the end of the UDP/TCP
- segment to pad the datagram to a length that is a multiple of 16
- bits. In all other respects, rules for computing the checksum are
- consistent with RFC 793 and RFC 768.
-
-
-
-
-
-
-
-
-
-
-
- IETF Page 18
- Internet Draft CLNP for TUBA January 6, 1993
-
-
- 7. REFERENCES
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- IETF Page 19
- January 6, 1993 CLNP for TUBA Internet Draft
-
-
- [1] ISO 8473--International Standards Organization--Data
- Communications-- Protocol for Providing the
- Connectionless-mode Network Service
-
- [2] Callon, R., TCP/UDP over Bigger Addresses (TUBA), Request for
- Comments 1347, Network Information Center, SRI
- International, Menlo Park, CA, May 1992.
-
- [3] Postel, J., Transmission Control Protocol (TCP). Request for
- Comments 793, Network Information Center, SRI
- International, Menlo Park, CA, 1981 September.
-
- [4] Postel, J., User Datagram Protocol (UDP). Request for Comments 768,
- Network Information Center, SRI International, Menlo Park, CA.
-
- [5] Postel, J., Internet Protocol (IP). Request for Comments 791,
- Network Information Center, SRI International, Menlo Park,
- CA, 1981 September.
-
- [6] Chapin, L., ISO CLNP, Draft International Standard version,
- Request for Comments 994, Network Information Center, SRI
- International, Menlo Park, CA.
-
- [7] ISO 8348--International Standards Organization--Data
- Communications--OSI Network Layer Addressing
-
- [8] Callon, R., Addressing for the new Internet.
- Request for Comments iiii, Network Information Center, SRI
- International, Menlo Park, CA.
-
- [9] Reynolds, J., and J. Postel, Assigned Numbers.
- Request for Comments 1340, Network Information Center, SRI
- International, Menlo Park, CA.
-
- [10] Kent, S., Security Option for IP,
- Request for Comments 1108, Network Information Center, SRI
- International, Menlo Park, CA.
-
- [11] Almquist, P., Type of Service in the Internet
- Protocol Suite. Request for Comments 1349, Network Information
- Center, SRI International, Menlo Park, CA.
-
- [12] ISO 6523 -- International Code Designators
-
- [13] Callon, R., NSAPA Guidelines for the Internet,
- Request for Comments RFC 1237, Network Information Center, SRI
- International, Menlo Park, CA.
-
- [14] Hagens, R. and C. Wittbrodt, CLNP Ping, Request for Comments
- 1139, Network Information Center, SRI
- International, Menlo Park, CA.
-
-
-
-
-
-
-
-
-
-
-
- IETF Page 20
- Internet Draft CLNP for TUBA January 6, 1993
-
-
- Appendix A. Checksum Algorithms (from ISO 8473)
-
-
-
- Symbols used in algorithms:
- c0, c1 variables used in the algorithms
- i position of octet in header (first
- octet is i=1)
- Bi value of octet i in the header
- n position of first octet of checksum (n=8)
- L Length of header in octets
- X Value of octet one of the checksum parameter
- Y Value of octet two of the checksum parameter
-
- Addition is performed in one of the two following modes:
-
- o+ modulo 255 arithmetic;
-
- o+ eight-bit one's complement arithmetic;
-
- The algorithm for Generating the Checksum Parameter Value is as
- follows:
-
- A. Construct the complete header with the value of the
- checksum parameter field set to zero; i.e., c0 <- c1 <- 0;
-
- B. Process each octet of the header sequentially from i=1 to L
- by:
-
- o+ c0 <- c0 + Bi
-
- o+ c1 <- c1 + c0
-
- C. Calculate X, Y as follows:
-
- o+ X <- (L - 8)(c0 - c1) modulo 255
-
- o+ Y <- (L - 7)(-C0) + c1
-
- D. If X = 0, then X <- 255
-
- E. If Y = 0, then Y <- 255
-
- F. place the values of X and Y in octets 8 and 9 of the
- header, respectively
-
- The algorithm for checking the value of the checksum parameter is
- as follows:
-
- A. If octets 8 and 9 of the header both contain zero, then the
- checksum calculation has succeeded; else if either but not
- both of these octets contains the value zero then the
- checksum is incorrect; otherwise, initialize: c0 <- c1 <- 0
-
-
-
-
-
-
-
-
-
- IETF Page 21
- January 6, 1993 CLNP for TUBA Internet Draft
-
-
- B. Process each octet of the header sequentially from i = 1 to
- L by:
-
- o+ c0 <- c0 + Bi
-
- o+ c1 <- c1 + c0
-
- C. When all the octets have been processed, if c0 = c1 = 0,
- then the checksum calculation has succeeded, else it has
- failed.
-
- There is a separate algorithm to adjust the checksum parameter
- value when a octet has been modified (such as the TTL). Suppose
- the value in octet k is changed by Z = newvalue - oldvalue. If X
- and Y denote the checksum values held in octets n and n+1
- respectively, then adjust X and Y as follows:
-
- If X = 0 and Y = 0 then do nothing, else if X = 0 or Y = 0 then
- the checksum is incorrect, else:
-
- X <- (k - n - 1)Z + X modulo 255
-
- Y <- (n - k)Z + Y modulo 255
-
- If X = 0, then X <- 255; if Y = 0, then Y <- 255.
-
- In the example, n = 89; if the octet altered is the TTL (octet
- 4), then k = 4. For the case where the lifetime is decreased by
- one unit (Z = -1), the assignment statements for the new values
- of X and Y in the immediately preceeding algorithm simplify to:
-
- X <- X + 5 Modulo 255
-
- Y <- Y - 4 Modulo 255
-
-
-
-
-
-
-
-